package com.hjj.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;


/**
 * 1、浏览器第一次访问tomcat的时候【需要使用HttpSession】，则Tomcat会创建一个HttpSession对象，并且产生一个SessionID
 * 2、Tomcat响应的时候会把SessionID响应到浏览器的cookies里面存储，前提是浏览器请求到时候没有在cookies中携带SessionID
 * 3、浏览器请求的时候如果在cookies中携带SessionID，则Tomcat会查找自己的SessionID集合，如果有则无变化，如果没有会响应一个新的SessionID
 * 4、浏览器请求的时候如果关闭了cookies功能，则无法携带SessionID，但是可以采用URL挂参数jsessionid的办法携带SessionID
 * 5、如果浏览器无法在请求的时候给出SessionID参数，Tomcat会无限次的创建Session对象和SessionID
 * 6、Tomcat响应的SessionID存储在浏览器的cookies中
 * 6.1、cookies的数据可以永久存储到硬盘中(浏览器关闭还在), 也可以存储到缓存中(浏览器一关闭，就没了)
 * 6.2、cookies的JSESSIONID存储在缓存中(浏览器一关闭，就没了)
 * 7、HttpSession对象销毁时机为超时，关闭浏览器行为只能让SessionID丢失
 *
 * cookies是客户端数据，存储在本地机
 * HttpSession是服务数据，存储在服务器(Tomcat在的机器)
 */

@RestController
@RequestMapping("/session")
public class MySession {

    @RequestMapping("/set.action")
    public String set(HttpSession httpSession){
        httpSession.setAttribute("s1", "aaaaaaaaaaaa");
        return "session设置完毕";
    }

    @RequestMapping("/get.action")
    public String get(HttpSession httpSession){
        return (String) httpSession.getAttribute("s1");
    }
}
